﻿Imports UI.frmConsultarEjercicios
Imports EntitiesLayer

'---------------------------------------> Clase creada por Diego Barillas <----------------------------------------

Public Class frmInformacionEjercicio
    Public imagenInicial As String = "imagenINoSeleccionada" 'variable que almacena la imagen en tipo string
    Public imagenFinal As String = "imagenFNoSeleccionada" 'variable que almacena la imagen en tipo string
    Public imagenEnbyte1 As Byte() 'variable que almacena la imagen en tipo byte
    Public imagenEnbyte2 As Byte() 'variable que almacena la imagen en tipo byte
    Dim myImg As Image 'variable que almacena la imagen en tipo image
    Dim myImg2 As Image 'variable que almacena la imagen en tipo image
    Dim idEjercicio As Integer
    Dim nombreComun As String
    Dim nombreOpcional As String
    Dim codigo As String
    Dim erroresComunes As String
    Dim indicacionesGenerales As String
    Dim nombreMusculoPrincipal As String
    Public ejercicio As New Ejercicio
    Dim listaMusculos As List(Of Musculo) = New List(Of Musculo) 'guarda los musculos seleccionados
    Dim lista As List(Of EntitiesLayer.Musculo)
    Dim listamus As List(Of EntitiesLayer.Musculo)
   
    Private Sub frmInformacionEjercicio_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        txtCodigo.Text = ejercicio.Codigo
        txtNombreComun.Text = ejercicio.NombreComun
        txtNombreOpcional.Text = ejercicio.NombreOpcional
        txtIndicaciones.Text = ejercicio.IndicacionesGenerales
        txtErrores.Text = ejercicio.ErroresComunes
        pxbPosicionInicial.Image = BytesToImagen(ejercicio.PosicionInicial)
        pxbPosicionFinal.Image = BytesToImagen(ejercicio.PosicionFinal)
        listamus = objGestor.consultarMusculosAsociados(ejercicio.Id)
        tblMusculos.AutoGenerateColumns = False
        lista = objGestor.listarMusculos()
        tblMusculos.DataSource = lista
        tblMusculos.Columns("Asociado").DataPropertyName = "asociado"
        tblMusculos.Columns("Id").DataPropertyName = "Id"
        tblMusculos.Columns("Nombre").DataPropertyName = "Nombre"
        tblMusculos.Columns("Irrigacion").DataPropertyName = "Irrigacion"
        tblMusculos.Columns("Inervacion").DataPropertyName = "Inervacion"
        tblMusculos.Columns("Insercion").DataPropertyName = "Insercion"
        tblMusculos.Columns("Origen").DataPropertyName = "Origen"
        cmbMusculos.SelectedText = ejercicio.MusculoPrincipal
        tblMusculos.Columns(0).ReadOnly = False
        tblMusculos.Columns(1).Visible = False
        tblMusculos.Columns(2).ReadOnly = True
        tblMusculos.Columns(3).ReadOnly = True
        tblMusculos.Columns(4).ReadOnly = True
        tblMusculos.Columns(5).ReadOnly = True
        tblMusculos.Columns(6).ReadOnly = True
        For Each row As DataGridViewRow In tblMusculos.Rows

            row.Cells.Item("Asociado").Value = False
        Next

        For Each dRow As DataGridViewRow In tblMusculos.Rows 'recorre cada celda del dataGrid de musculos asociados
            For Each musculo As Musculo In listamus 'recorre cada musculo de la lista de musculos asociados al ejercicio

                If dRow.Cells.Item("Id").Value = musculo.Id Then 'si alguna fila del dataGrid tiene el mismo id de la lista del musculo entra al if

                    dRow.Cells.Item("Asociado").Value = True

                End If
            Next
        Next

        'For Each musculo As Musculo In objGestor.listaMusculos 'recorre la lista de musculos
        '    cmbMusculos.Items.Add(musculo.Nombre) 'muestra en el combobox el nombre del ejercicio
        'Next
        cmbMusculos.Text = ejercicio.MusculoPrincipal
        cmbMusculos.DisplayMember = ejercicio.MusculoPrincipal


    End Sub

    Public Sub setEjercicio(pejercicio As Ejercicio)
        ejercicio = pejercicio

    End Sub

    Private Sub txtNombreOpcional_TextChanged(sender As Object, e As EventArgs) Handles txtNombreOpcional.TextChanged

    End Sub

    Private Sub btnInfoEjercicio_Click(sender As Object, e As EventArgs) Handles btnModificar.Click
        'Valida que se hayan seleccionado ambas imagenes'
        If imagenFinal = "Seleccione la imagen " Then 'si no se selecciono ninguna imagen
            imagenFinal = "imagenCancelada" 'se guarda como texto imagenCancelada
        End If
        If imagenInicial = "Seleccione la imagen " Then 'si no se selecciono ninguna imagen
            imagenInicial = "imagenCancelada" 'se guarda como texto imagenCancelada
        End If

        If imagenInicial = "imagenCancelada" Or imagenInicial = "imagenINoSeleccionada" Then 'si la image fue cancelada o no seleccionada
            myImg = pxbPosicionInicial.Image 'agarra la imagen que ya estaba cargada desde el inicio
            imagenEnbyte1 = ImagenToBytes(myImg) 'convierte la imagen a bytes

        End If
        If imagenFinal = "imagenCancelada" Or imagenFinal = "imagenFNoSeleccionada" Then 'si la image fue cancelada o no seleccionada
            myImg2 = pxbPosicionFinal.Image 'agarra la imagen que ya estaba cargada desde el inicio
            imagenEnbyte2 = ImagenToBytes(myImg2) 'convierte la imagen a bytes


        End If

        'Recorre cada fila del dataGrid tblMusculos
        For Each dRow As DataGridViewRow In tblMusculos.Rows

            'Si la fila en la celda asociado el valor es true entra al if
            If dRow.Cells.Item("Asociado").Value = True Then

                'listaMusculos.Add(objGestor.listaMusculos.ElementAt(Convert.ToUInt32(dRow.Index))) 'guarda el musculo en la lista de musculos
            End If
        Next dRow

        'valida que si la lista de musculos es cero muestre un mensaje de error
        If listaMusculos.Count = 0 Then
            lblMusculos.Visible = True
        Else
            codigo = txtCodigo.Text
            nombreComun = txtNombreComun.Text
            nombreOpcional = txtNombreOpcional.Text
            erroresComunes = txtErrores.Text
            indicacionesGenerales = txtIndicaciones.Text
            nombreMusculoPrincipal = cmbMusculos.SelectedItem

        End If

        objGestor.modificarEjercicio(ejercicio.Id, nombreComun, nombreOpcional, codigo, imagenEnbyte1, imagenEnbyte2, nombreMusculoPrincipal, listaMusculos, erroresComunes, indicacionesGenerales)


        Dim frmModificarRoles As New frmRegistroExitoso 'crea una instancia del form modificar roles
        frmModificarRoles.Dock = DockStyle.Fill
        frmTransparente.AgregarContenido(frmModificarRoles)
        frmModificarRoles.agregarLabels("del ejercicio " + nombreComun + ".")
        frmTransparente.Show()
        Me.Hide()

        frmSecundario.Width = Screen.PrimaryScreen.WorkingArea.Width
        frmSecundario.Height = Screen.PrimaryScreen.WorkingArea.Height - Screen.PrimaryScreen.WorkingArea.Height * (60 / 100)
        frmSecundario.Location = New Point(Screen.PrimaryScreen.WorkingArea.X, Screen.PrimaryScreen.WorkingArea.Height * (32 / 100))

    End Sub

    Private Sub cargarImagenFinal()
        Try
            Me.abrirArchivo2.ShowDialog() 'abre el openFileDialog
            If Me.abrirArchivo2.FileName <> "" Then 'si el archivo abierto no es vacio
                imagenFinal = abrirArchivo2.FileName 'guarda el archivo en la variable imagenInicial
                pxbPosicionFinal.Load(imagenFinal) 'carga la imagen en el pictureBox

                myImg2 = pxbPosicionFinal.Image 'Guardar la imagen del PictureBox en el objeto Image
                imagenEnbyte2 = ImagenToBytes(myImg2) 'llama al metodo que convierte la imagen a bytes


            End If
        Catch ex As Exception

        End Try


    End Sub

    Private Sub cargarImagenInicial()
        Try
            Me.abrirArchivo.ShowDialog() 'abre el openFileDialog
            If Me.abrirArchivo.FileName <> "" Then 'si el archivo abierto no es vacio
                imagenInicial = abrirArchivo.FileName 'guarda el archivo en la variable imagenInicial
                pxbPosicionInicial.Load(imagenInicial) 'carga la imagen en el pictureBox

                myImg = pxbPosicionInicial.Image 'Guardar la imagen del PictureBox en el objeto Image
                imagenEnbyte1 = ImagenToBytes(myImg) 'llama al metodo que convierte la imagen a bytes
            End If
        Catch ex As Exception

        End Try

    End Sub

    Private Sub subirImagenFinal_Click(sender As Object, e As EventArgs) Handles subirImagenFinal.Click

        cargarImagenInicial() 'llama al metodo cargaImagenFinal
    End Sub

    Private Sub btnSubirImagenInicial_Click(sender As Object, e As EventArgs) Handles btnSubirImagenInicial.Click

        cargarImagenFinal() 'llama al metodo cargaImagenInicial
    End Sub


End Class
